package com.itheima.filter;

import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;

/*
 了解 Filter 这一生 (生命周期)
   spring启动的时候--就会发现
      @ServletComponentScan // 扫描 servlet技术的内容
     去扫描 启动类包下 有没有加上@WebFilter 的类
     如果有  给它创建出来 交给spring管理。。
    1:spring容器启动出生 一次
    2:提供拦截 n次 只要符合拦截路径 就拦截
    3:容器关闭的时候  -- 对象跟着销毁
 */

//@WebFilter(value = "/*")// /* 拦截所有
//@WebFilter(urlPatterns = {"/*"})// /* 拦截所有
//@WebFilter(urlPatterns = {"/depts"})// /depts 只拦截 /depts
//@WebFilter(urlPatterns = "/depts/*")// /depts/*   拦截 /depts 及其 子路径
public class YourFilter implements Filter {
    // 这个方法执行代表  过滤器对象 产生了
    public void init(FilterConfig config) throws ServletException {
        System.out.println("your filter 呱呱坠地");//spring容器启动的时候
    }
    // 这个方法执行代表  过滤器对象 即将销毁
    public void destroy() {
        System.out.println("垂死病中惊坐起");
    }
   // 实现拦截
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        System.out.println("YourFilter 此树是我栽 此路是我开 要想此路过留下买路财！！");
        // 实现放行
        System.out.println("放行前逻辑--开发");
        chain.doFilter(request, response);//放行方法  请求放行给对应的请求资源
        System.out.println("放行后逻辑--不写");// 请求资源执行完毕之后 再执行
    }
}
